import useDictStore from '@/store/modules/dict'
import { getDicts } from '@/api/system/dict/data'

/**
 * 获取字典数据
 */
export function useDict(...args) {
  const res = ref({});
  return (() => {
    args.forEach((dictType, index) => {
      res.value[dictType] = [];
      const dicts = useDictStore().getDict(dictType);
      if (dicts) {
        res.value[dictType] = dicts;
      } else {
        getDicts(dictType).then(resp => {
          res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass }))
          useDictStore().setDict(dictType, res.value[dictType]);
        })
      }
    })
    return toRefs(res.value);
  })()
}

/**
 * 获取字典中label对应的value,多个相同值默认返回第一个
 */
export function getDictValueByLabel(dicts, dictLabel) {
  if(isRef(dicts)){
    dicts = dicts.value
  }
  let label = '';
  try {
    label = dicts.find(i=>{
      return i.label == dictLabel
    }).value
  } catch (error) {
    //console.log("🚀 ~ getDictValueByLabel ~ error:", error)
  }
  return label
}

/**
 * 获取字典中value对应的label,多个相同值默认返回第一个
 */
export function getDictLabelByValue(dicts, dictValue) {
  if (dictValue === null) {
    return 'value值为null'
  }
  if(isRef(dicts)){
    dicts = dicts.value
  }
  let value = '';
  try {
    value = dicts.find(i=>{
      return i.value == dictValue
    }).label
  } catch (error) {
    //console.log("🚀 ~ getDictLabelByValue ~ error:", error)
  }
  return value
}
